import axios from 'axios'
import { MessageBox, Message, Loading } from 'element-ui'
import store from '@/store'
import router from '@/router' // 假设你的路由文件路径为 '@/router'

const baseURL = 'http://101.42.6.163:8686'

// 创建一个 loading 实例
let loadingInstance = null

// 创建一个 axios 实例
const service = axios.create({
  baseURL: baseURL,
  timeout: 120000,
  responseType: 'json'
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 在请求开始时显示 loading
    // loadingInstance = Loading.service()
		if(!config.hideloading){
			loadingInstance = Loading.service()
		}else{
			loadingInstance = Loading.service({text:'加载中请稍等...'})
		}
    let token = localStorage.getItem('token')
    if (token) {
      config.headers.Authorization = "Bearer " + token
      config.headers['Authorization'] = "Bearer " + token
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  response => {
    // 在请求结束时隐藏 loading
    loadingInstance.close()
    
    const responseType = response && response.config && response.config.responseType
    if ((responseType || '').toUpperCase() === 'BLOB') {
      return response
    }
    
    const res = response.data
    if (res.code === 401) {
      // 处理未授权的情况，例如跳转到登录页面
      if (router.currentRoute.meta.requiresAuth) { // 添加条件判断如果页面路径需要登录，则跳转到登录页

        MessageBox.alert('您的身份验证已过期，请重新登录', '提示', {
          confirmButtonText: '确定',
          callback: () => {
            localStorage.clear();
            sessionStorage.clear();
            // 跳转到登录页面
            router.push('/login')
          }
        })
      }
      return
    }

    return res
  },
  error => {
    loadingInstance.close() // 隐藏 loading
    
    Message({
      message: error.response && error.response.data ? error.response.data.message || error.response.data.error || error.response.statusText : error.msg,
      type: 'error',
      duration: 5 * 1000,
      showClose: true
    })
    return Promise.reject(error)
  }
)
// 自定义函数，判断用户是否登录，根据实际情况修改
// function isLoggedIn() {
  
//   const token = localStorage.getItem('token');
//   return !!token; // 如果 token 存在，则认为用户已登录
// }


export default service